package DAO;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import ClassesBasicas.Convenio;
import Excecao.ConvenioInexistenteException;

public class RepositorioConvenio extends RepositorioBasico {
	
		
	public RepositorioConvenio(){
		super();
	}
		

	
	public void atualizar(Convenio convenio) throws ConvenioInexistenteException 
	{
		abreSessao();
		session.saveOrUpdate(convenio);
		fechaSessao();
	}

	public void inserir(Convenio convenio) 
	{
		abreSessao();
		session.save(convenio);
		fechaSessao();
	}

	public Convenio procurar(int codigo) throws ConvenioInexistenteException 
	{
		abreSessao();
		Convenio convenio = (Convenio) session.get(Convenio.class,codigo);
		fechaSessao();
		return convenio;
	}
	
	public Convenio procurarConvenioNome(String nome)throws ConvenioInexistenteException{
		Convenio retorno = null;
		Collection<Convenio> listaAux = this.listarConvenios();
		for(Convenio c : listaAux){
			if(c.getNome().toUpperCase().trim().equals(nome.toUpperCase().trim())){
				retorno = c;
			}
		}	
		if(retorno == null){
			throw new ConvenioInexistenteException();
		}
		return retorno;
	}

	public boolean existe(String nome){
		boolean existe = true;
		@SuppressWarnings("unused")
		Convenio aux;
		try {
			aux = procurarConvenioNome(nome);
		} catch (ConvenioInexistenteException e) {
			existe = false;
		}
		return existe;
	}
	
	public void remover(String nome) throws ConvenioInexistenteException 
	{
		abreSessao();
		Convenio convenio = (Convenio) session.get(Convenio.class,Integer.parseInt(nome));
		session.delete(convenio);
		fechaSessao();
	}
	
	@SuppressWarnings("unchecked")
	public Collection<Convenio> listarConvenios(){
		abreSessao();
		Collection<Convenio> retorno = new ArrayList<Convenio>(0);
		org.hibernate.Query q = session.createQuery("from Convenio");
		List<Convenio> lista =  q.list();
		for(Convenio c : lista){
			retorno.add(c);
		}
		fechaSessao();
		return retorno;
	}


}
